package com.huan.quartz.quartz;

import com.huan.quartz.domain.QuartzJobCfg;

/**
 * quartz service
 *
 * @author huan.fu
 * @date 2018/9/10 - 15:54
 */
public interface QuartzService {

	/**
	 * 添加一个 quartz job
	 *
	 * @param job
	 */
	void addQuartzJob(QuartzJobCfg job);

	/**
	 * 更新 job
	 *
	 * @param job
	 */
	void updateQuartzJob(QuartzJobCfg job);

	/**
	 * 删除 job
	 *
	 * @param job
	 */
	void deleteQuartzJob(QuartzJobCfg job);

	/**
	 * 暂停一个 job
	 *
	 * @param job
	 */
	void pauseQuartzJob(QuartzJobCfg job);

	/**
	 * 恢复一个 job
	 *
	 * @param job
	 */
	void resumeQuartzJob(QuartzJobCfg job);

	/**
	 * 立即执行一次
	 *
	 * @param job
	 */
	void immediateExecuteJob(QuartzJobCfg job);

	/**
	 * 动态更新 job 执行的 class
	 *
	 * @param bytes
	 * @param cfg
	 */
	void updateQuartzJobExecuteClass(byte[] bytes, QuartzJobCfg cfg);
}
